SELinux for Apache CGI |
2006/03/15 ~ 阿亮 ~ |
最近安裝某產品在 Redhat Enterprise Server 4 (ES4) 上,有一部份需要以 cgi 的方式運作,
而且,Apache 設定都有設 ScriptAlias 等,同樣的環境在 Redhat9 都沒有問題,可是在
ES4,該 cgi 就是不正常 Work (internal error 之類的),查 Log 有下述的訊息。
而且,Apache 設定都有設 ScriptAlias 等,同樣的環境在 Redhat9 都沒有問題,可是在
ES4,該 cgi 就是不正常 Work (internal error 之類的),查 Log 有下述的訊息。
- audit(1141721196.117:0): avc: denied { execute } for pid=5818 comm=httpd name=xxx dev=hda2 ino=295228 scontext=root:system_r:httpd_t tcontext=system_u:object_r:usr_t tclass=file
網路查到這是 SELinux 這個套件所造成的,在 ES3 以及 Fedora 3 以後的版本,預設都會開啟此套件, 許多網頁會建議,/etc/selinux/config 這個檔,SELINUX=enforcing 改成 SELINUX=disabled ,嗯,這不是好主意,因為這是完全關閉該機制。就像買了個人防護軟體,然後,將所有的安全預設值,全部關掉一樣。
主要用 chcon 這個指令將要提供服務的目錄加以設定,-R 表示 recursive dir, -t 表示要指定的類型
- chcon -R -t httpd_user_content_t <要被 cgi process 讀取的檔案目錄>
- chcon -R -t httpd_sys_script_exec_t <提供 CGI 服務的目錄>
其餘 chcon 設 httpd 的其他類型,參考這裡 。
如果設定後,覺得總是有問題,可以用下列指令回歸到原始的設定,再重新設定
- /sbin/restorecon -v -R /home
參考來源: